#ifndef _FTEXTINTERFACE_H_
#define _FTEXTINTERFACE_H_

#include "FGlyphQuad.h"

namespace Font
{

	class InterfaceText
	{
	
	public:
	
		InterfaceText();
		~InterfaceText();

		virtual bool Write(const unsigned char* a_Message, unsigned int a_Length) = 0;
	
	protected:

		virtual bool _OnWriteInstructions(TextInstructions* a_Instructions) = 0;

		virtual void _OnInstructionNewLine(tb::Vec2& a_Cursor, const TextCommand& a_Data) = 0;
		virtual void _OnInstructionTab(tb::Vec2& a_Cursor, const TextCommand& a_Data) = 0;

		virtual void _OnGlyphKerning(tb::Vec2& a_Cursor, GlyphEntry* a_Left, GlyphEntry* a_Right) = 0;
		virtual void _OnGlyphTransform(tb::Vec2& a_Cursor, GlyphQuad& a_Quad, GlyphEntry* a_Entry) = 0;
		virtual bool _OnGlyphAdd(tb::Vec2& a_Cursor, GlyphEntry* a_Entry) = 0;
	
	}; // class InterfaceText

}; // namespace Font
	
#endif